<HTML>
<HEAD>
<TITLE>
Compuesto.cpp
</TITLE>
</HEAD>
<BODY>
<PRE>
<font color="blue">#include</font> <font color="maroon">"Compuesto.h"</font>

Compuesto<font color="black">:</font><font color="black">:</font>Compuesto<font color="black">(</font><font color="black">)</font><font color="black">{</font>
    <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>cantidadComponentes <font color="black">=</font> <font color="maroon">0</font>;
<font color="black">}</font>

<font color="blue">void</font> Compuesto<font color="black">:</font><font color="black">:</font>addComponente<font color="black">(</font>ComponenteAlmacenamiento <font color="black">*</font>componente<font color="black">)</font><font color="black">{</font>
    <font color="blue">if</font><font color="black">(</font>componente<font color="black">=</font><font color="black">=</font>NULL<font color="black">)</font>
        <font color="blue">throw</font> <font color="blue">new</font> NullPointerException<font color="black">(</font><font color="black">)</font>;
<font color="green">/*  if(this-&#62;cantidadComponentes&#62;0){
        if( typeof(this-&#62;componentes[0]) != typeof(componente) )
            throw new CompuestoException(CompuestoException::add);
    }       
*/</font>  ComponenteAlmacenamiento <font color="black">*</font><font color="black">*</font>auxiliar;
    auxiliar <font color="black">=</font> <font color="black">(</font>ComponenteAlmacenamiento<font color="black">*</font><font color="black">*</font><font color="black">)</font> realloc<font color="black">(</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>componentes,<font color="blue">sizeof</font><font color="black">(</font>ComponenteAlmacenamiento<font color="black">*</font><font color="black">)</font><font color="black">*</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>cantidadComponentes<font color="black">+</font><font color="maroon">1</font><font color="black">)</font>;
    <font color="blue">if</font><font color="black">(</font>auxiliar<font color="black">=</font><font color="black">=</font>NULL<font color="black">)</font>
        <font color="blue">throw</font> <font color="blue">new</font> CompuestoException<font color="black">(</font>CompuestoException<font color="black">:</font><font color="black">:</font>add<font color="black">)</font>;
    <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>componentes <font color="black">=</font> auxiliar;
    <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>componentes<font color="black">[</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>cantidadComponentes<font color="black">]</font> <font color="black">=</font> componente;
    <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>cantidadComponentes<font color="black">+</font><font color="black">+</font>;
<font color="black">}</font>

<font color="blue">void</font> Compuesto<font color="black">:</font><font color="black">:</font>deleteComponentAt<font color="black">(</font><font color="blue">int</font> index<font color="black">)</font><font color="black">{</font>
     <font color="blue">if</font><font color="black">(</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>cantidadComponentes <font color="black">&#62;</font><font color="black">=</font> index<font color="black">)</font>
         <font color="blue">throw</font> <font color="blue">new</font> CompuestoException<font color="black">(</font>CompuestoException<font color="black">:</font><font color="black">:</font>get<font color="black">)</font>;
     free<font color="black">(</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>componentes<font color="black">[</font>index<font color="black">]</font><font color="black">)</font>;
     <font color="blue">int</font> i;
     <font color="blue">for</font><font color="black">(</font>i<font color="black">=</font>index;i<font color="black">&#60;</font><font color="black">(</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>cantidadComponentes<font color="maroon">-1</font><font color="black">)</font>;i<font color="black">+</font><font color="black">+</font><font color="black">)</font><font color="black">{</font>
         <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>componentes<font color="black">[</font>i<font color="black">]</font> <font color="black">=</font> <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>componentes<font color="black">[</font>i<font color="black">+</font><font color="maroon">1</font><font color="black">]</font>;
     <font color="black">}</font>
     <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>cantidadComponentes<font color="black">-</font><font color="black">-</font>;
     <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>componentes <font color="black">=</font> <font color="black">(</font>ComponenteAlmacenamiento<font color="black">*</font><font color="black">*</font><font color="black">)</font> realloc<font color="black">(</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>componentes,<font color="blue">sizeof</font><font color="black">(</font>ComponenteAlmacenamiento<font color="black">*</font><font color="black">)</font><font color="black">*</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>cantidadComponentes<font color="black">)</font>;
<font color="black">}</font>


ComponenteAlmacenamiento<font color="black">*</font> Compuesto<font color="black">:</font><font color="black">:</font>getComponenteAt<font color="black">(</font><font color="blue">int</font> index<font color="black">)</font><font color="black">{</font>
    <font color="blue">if</font><font color="black">(</font>index<font color="black">&#62;</font><font color="black">=</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>cantidadComponentes<font color="black">)</font>
        <font color="blue">throw</font> <font color="blue">new</font> CompuestoException<font color="black">(</font>CompuestoException<font color="black">:</font><font color="black">:</font>get<font color="black">)</font>;
    <font color="blue">return</font> <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>componentes<font color="black">[</font>index<font color="black">]</font>;
<font color="black">}</font>

<font color="blue">int</font> Compuesto<font color="black">:</font><font color="black">:</font>getCantidadComponentes<font color="black">(</font><font color="black">)</font><font color="black">{</font>
    <font color="blue">return</font> <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>cantidadComponentes;
<font color="black">}</font>

Compuesto<font color="black">:</font><font color="black">:</font>~Compuesto<font color="black">(</font><font color="black">)</font><font color="black">{</font>
    free<font color="black">(</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>componentes<font color="black">)</font>;
<font color="black">}</font>


</PRE>
</BODY>
</HTML>
